跳到主要内容

在 Mangrove 上发布拓展:以 pg_hello_world 为例

经典的 “Hello world” 程序在程序界中广受赞誉,在本篇文章中,我们将以此为案例阐述在 Mangrove 上发布拓展的方法。

pg-hello-world

(pg_hello_world 拓展提供了一个名为 pg_hello_world 的函数,执行这个函数可以得到经典的 Hello world

打开 Mangrove-Index 索引管理仓库页面

Mangrove 程序依赖 Mangrove-Index 仓库展开拓展下载的工作,因此想要发布拓展的话,打开这个页面应当是工作开始的第一步。

Mangrove-Index

Fork Mangrove-Index 索引管理仓库

在仓库页面上找到 fork 按钮,创建一个属于你的 Mangrove 索引管理仓库(出于安全因素考虑,我们希望社区的参与者先将拓展信息发布于自己的索引管理仓库,再将其以 PR 的形式合并于社区仓库)。

fork

fork-1

(这需要你拥有一个开放原子基金会的账户)

将 Fork 的仓库 clone 到本地

点击右面的下载按钮,复制 git 仓库的网址,在 shell 命令行中使用 git 工具执行 clone 操作。

clone

git-clone

打开 extension 文件夹

在下载以后的 Mangrove-Index 文件夹找到 extension 文件夹,打开它:

open-extension

extension-folder

文件夹内是其他用户所上传或维护中的拓展索引信息,在这里,你需要建立一个新的文件夹,用以描述你的拓展。

在 extension 文件夹中存储你希望发布的拓展

pg_hello_world 拓展的发布为案例,在 extension 文件夹中,建立一个名为 pg_hello_world 的文件夹。

Mangrove-Index 索引由下面四个文件组成:

  1. pre_install.sh ... 安装拓展前,希望执行的脚本文件
  2. install.sh ... 安装拓展所需要执行的脚本文件
  3. after_install.sh ... 安装拓展后所需要执行的脚本文件
  4. describle.json ... 用于描述拓展的 json 文件

Mangrove 程序将会按照 pre -> install -> after 的顺序执行脚本文件(如果没有实际需要,可以不编写对应脚本并且留空),同时将会按照 describle.json 中的内容向用户阐述拓展的有关信息。

如在本案例中的 pg_hello_world 拓展中,我们可以仅编写 install.shdescrible.json 文件,内容如下所示:

# install.sh
make install
{
"introduce" : "PostgreSQL Hello world 拓展程序",
"repo" : "https://atomgit.com/wenyi/pg_hello_world.git",
"requirements_software_tips" : [],
"support_postgresql_tips": ["PostgreSQL 9+"],
"support_system_tips": ["Linux"]
}

完成这些事项以后,在本地的 git 仓库中登记这一贡献过程,并将其推送到 AtomGit 中的存储仓库中

# 以 pg_hello_world 为例
git add .
git commit -m "贡献 pg_hello_world"
git push

pg_hello_world

向 Mangrove 社区仓库提交 PR

现在,打开你所 Fork 的 Mangrove-Index 仓库页面,找到 变更请求 页面部分,单击新建 变更请求 按钮:

my-index

pr-1

在完成提交以后,即需等待社区的审批与响应(一般而言,只要不存在对于社区索引仓库的破坏行为,审核就会通过)。

complete

(审核完成以后,社区的仓库信息将会更新)

通过 Mangrove 程序验证发布结果

Mangrove 程序提供了 -s 指令帮助我们验证拓展索引的发布成功与否,如在这里,可以执行如下指令:

python -m mangrove pg_hello_world

mangrove-search
(可以发现,目前的社区仓库已经可以搜索到我们的 pg_hello_world 拓展了)

mangrove-install (使用 -i 指令的话,我们可以安装部署 pg_hello_world 程序)

after-install-test
(在完成安装以后,需要我们手动执行 CREARE EXTENSION 在 PostgreSQL 中进行注册,并验证是否成功运行)